//
//  HPHomePageCell.swift
//  MyWeibo
//
//  Created by Apeng on 16/4/14.
//  Copyright © 2016年 Apengpeng. All rights reserved.
//

import UIKit
import SnapKit

let cellViewMargin = 2.0

class HPHomePageCell: UITableViewCell {
    
    // 工具条的约束
    var toolBarTopCons: Constraint?
    
//**** 在 MVVM 中需要在 view 中 的 didset 方法给模型绑定数据*********
    //**** 在MVC 中需要在 cell 中设置给模型绑定数据*********
    var statusCellVM: HPStatusCellViewModel? {
        
        didSet {
            // 原创微博数据源
            originalView.statusCellVM = statusCellVM
            
            // 转发微博数据源
            rePrintView.statusCellVM = statusCellVM
            
            // 测试图片的个数
            print("微博图片数组的长度",statusCellVM?.status?.pic_urls?.count)

            //卸载原来的约束
            self.toolBarTopCons?.uninstall()
//             判断是否是转发微博, 设置显示或者隐藏
            // if else 来判断, 防止cell 的复用
            if statusCellVM?.status?.retweeted_status != nil {
                //存在转发微博
                // "更新"  约束
                toolBarView.snp_updateConstraints(closure: { (make) -> Void in
                    self.toolBarTopCons = make.top.equalTo(rePrintView.snp_bottom).constraint
                })
                
                // 显示转发的微博, 设置数据源
                rePrintView.hidden = false
                rePrintView.statusCellVM = statusCellVM
                
            } else {
                
                // 原创微博 "更新" 约束
                toolBarView.snp_updateConstraints(closure: { (make) -> Void in
                    self.toolBarTopCons = make.top.equalTo(originalView.snp_bottom).constraint
                })
            
                // 没有转发微博
                rePrintView.hidden = true
                // 设置转发微博的模型数组为空
                rePrintView.statusCellVM = nil
            }
        }
    }

   // 重写init 方法
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: .Default, reuseIdentifier: reuseIdentifier)
        
        // 设置选中cell 不能被选中
        selectionStyle = .None

        setupUI()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // 设置cell的界面
    private func setupUI() {
        
        backgroundColor = UIColor.whiteColor()
       
//         在加载cell之前设置cell 的高度
        contentView.addSubview(originalView)
        contentView.addSubview(toolBarView)
        contentView.addSubview(rePrintView)
        
        // 原创微博View
        originalView.snp_makeConstraints { (make) -> Void in
            // 设置微博的间距
            make.top.equalTo(contentView.snp_top)
            make.left.right.equalTo(contentView)
        }
        
        // 转发微博View
        rePrintView.snp_makeConstraints { (make) -> Void in
            make.top.equalTo(originalView.snp_bottom)
            make.left.right.equalTo(contentView.snp_left)

        }
        
        // 工具条view
        toolBarView.snp_makeConstraints { (make) -> Void in
            
             // 在toobar 出现的地方记录top 约束,
            self.toolBarTopCons = make.top.equalTo(rePrintView.snp_bottom).constraint
            make.left.right.equalTo(contentView)
            make.height.equalTo(40)
        }
        
        // 添加contentView约束 约束底部, 为了自动计算行高
        contentView.snp_makeConstraints { (make) -> Void in
            make.left.top.right.equalTo(self)
            make.bottom.equalTo(toolBarView.snp_bottom)
        } 
    }
    
    // 原创微博的视图
    private lazy var originalView: HPOriganalView = HPOriganalView()
    // 工具条视图
    private lazy var toolBarView: HPToolBarView = HPToolBarView()
    // 转发微博视图
    private lazy var rePrintView: HPReprintView = HPReprintView()

}
